//
// Created by luo on 2022-08-25.
//

#ifndef LEARNINGCPLUSOPENCV_OPENCV_H
#define LEARNINGCPLUSOPENCV_OPENCV_H


#include<opencv2/opencv.hpp>
#include<stdio.h>
#include <stdlib.h> //c语言标准库函数头文件,随机数头文件
#include <iostream>//最常用的头文件-用处：数据流输入／输出：cin，cout的头文件
#include <algorithm>//算法类函数:sort().....的头文件
#include <cmath>//各个数学函数：max()，min()，sqrt()....的头文件
#include<string>//字符串操作的头文件
#include<windows.h>//windows操作的头文件，如：Sleep(),system()
//结构类：vector,map,list,queue,stack的头文件：
#include <list>
#include <map>
#include <queue>
#include <vector>
#include <stack>

using namespace  std;
using namespace  cv;

class QuickDemo
{
public:
    void Test_basic(); //第一章 Mat类的构造与赋值
    void Test_riw(Mat &mat);//第二章 图片的读取与保存
    void Test_base(Mat &mat);//第三章 图像处理的基本操作
    void Test_trackbar(cv::Mat frame);//滑动条操作

    //第四章 图像直方图
    void my_calhist(Mat &mat);//绘制图像直方图
    void my_normalizes(Mat &mat);//数据归一化
    void my_comparehist(Mat &mat);//直方图比较
    void my_equalizehist(Mat &mat);//图像直方图均衡化
    void my_histmatch(Mat &mat);//图像直方图匹配
    void my_calbackproject(Mat &mat);//图像直方图反向投影
    void my_matchtemple(Mat &mat);//图像的模板匹配

    //第五章 图像滤波
    void my_filter2D(Mat &mat); //图像卷积
    void my_jyvoice(Mat &mat); //产生椒盐噪声
    void my_gaussvoice(Mat &mat); //产生高斯噪声
    //线性滤波
    void my_linearfiltering_average(Mat &mat);//均值滤波
    void my_linearfiltering_rect(Mat &mat);//方框滤波
    void my_linearfiltering_gauss(Mat &mat);//高斯滤波
    void my_linearfiltering_split(Mat &mat);//可分离滤波
    //非线性滤波
    void my_notlinearfiltering_medianBlur(Mat &mat);
    void my_notlinearfiltering_bilateralFilter(Mat &mat);
    void my_edgedetection_converAbs(Mat &mat); //图像边缘检测原理
    void my_edgedetection_Sobel(Mat &mat);
    void my_edgedetection_Scharr(Mat &mat);
    void my_edgedetection_DerivKernels(Mat &mat);
    void my_edgedetection_Laplacian(Mat &mat);
    void my_edgedetection_Canny(Mat &mat);

    //第六章 形态学处理
    void my_imagedistance_change(Mat &mat);//图像像素距离变换
    void my_imageConnecteddomain_analyse(Mat &mat);//图像连通域分析
    void my_image_erode(Mat &mat); //腐蚀
    void my_image_dilate(Mat &mat); //膨胀
    void my_morphologyEx(Mat &mat); //形态学开运算
    void my_image_refine(Mat &mat);//图像细化

    //第七章 目标检测


    //第十章 立体视觉
    void my_Homeogeneous(Mat &mat);//齐次与非齐次坐标转换
    void my_Corner_extraction_calibration(Mat &mat);//标定板角点提取
    void my_calibratecamera(Mat &mat);//计算相机内参矩阵和畸变系数,相机标定
    void my_PnP_PNPAndRansac(Mat &mat);//单目位姿估计

    //第十二章 机器学习与深度学习
    //机器学习
    void my_KMeanPoints(Mat &mat); //对坐标点K均值运算
    void my_KMeanImage(Mat &mat);//对图像均值运算

    //深度学习

private:
    //cv::Mat src,img;
};

#endif //LEARNINGCPLUSOPENCV_OPENCV_H
